home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / forth / doc / gemwords.doc < prev    next >
Encoding:
Text File  |  1994-09-22  |  25.6 KB  |  649 lines

  1. 0720303030366
  2. 1Forth-GEM-Bibliothek
  3. 2page #
  4. 9[....................................................]011
  5. üëDieGEM-BibliothekdesvolksFORTH83
  6. Ç
  7.  
  8. Diese volksFORTH83-VersionenthälteineumfangreicheBibliothek
  9. derGEM-Routinen.DieseBibliothekgliedertsichindieTeileAES
  10. ("ApplicationEnvironmentSystem")undVDI("VirtualDevice
  11. Interface").ImvolksFORTHgehörtaucheinTeilBASICS  dazu,der
  12. dieVDIundAESgemeinsamenTeileenthält.
  13.  
  14. DieNamendervonGEMzurVerfügunggestelltenFunktionen
  15. enstprechenvÖlligdenNamen,dievom"C"desEntwicklungspakets
  16. her bekannt sind.VielePräfixehabenwirjedochweggelassen,da
  17. sienurunnötigvielPlatzverbrauchenwürden. Die Funktionen
  18. benötigenzumeistauchdieselbenArgumente,wobeiwirunsbemüht
  19. haben,überflüssigeEingangswertewegzulassen(z.B.bestimmte
  20. Handles).MancheAufrufeliefernsoviele Ausgangswerte,daß wir
  21. unsentschlossenhaben,sienichtalleaufdenStackzupacken.In
  22. diesemFallmußmansieselbstausdemenstprechendenArrayholen.
  23. Wo,findetmanggf.inderLiteratur.DieEingangswertestehen
  24. jedoch(mitAusnahmevonEVNT_MULTI)aufdenStack.
  25.  
  26. -)   Wer  Zugang  zur GEM-Programmierung sucht,  sollte  sich  die 
  27.      Literatur des Entwicklungspakets von Atari verschaffen.  Dort 
  28.      sind (fast) alle Funktionen (viele fehlerhaft !) beschrieben. 
  29. DieQualitätistabernichtbesonders,z.TauchaufdenIBM-
  30. PC abgestellt.
  31. -)   Empfehlenswert,  wenn  auch ausserordentlich knapp und  daher 
  32.      nur  als  Nachschlagewerk  geeignet,  ist  das  Handbuch  zum 
  33.      Megamax C-Compiler.
  34. -)   Einige Zeitschriften des Atari-Marktes beginnen Fortsetzungs-
  35.      reihen  zur  GEM-Programmierung,  die ich aber  bisher  nicht 
  36.      empfehlen kann.
  37. ü
  38. ÇFürdieGEM-Programmierungistaußerdemeinsog.Resource
  39. ConstructionSeterforderlich.DasisteinProgramm,mitdemdie
  40. Menüleisten,Dialog-undAlertboxensowiedieIcons
  41. hergestelltwerden.DasProgrammerzeugteinFile,daßauf".RSC"
  42. endet(dassog.Resourcefile)undein".H"-File,daßdieAnbindung
  43. desResourcefilesan"C"-Programmeerlaubt.DiesesC-Fileenthält
  44. Konstantendefinitionenfürjedes"Objekt"(jedesnochsokleine
  45. TeileinesResourcefilesistsoeinObjekt),dieanalogauchin
  46. ihremForth-Programmauftretenmüssen.VergleichenSiedazubitte
  47. dasFileEDIICON.H(für"C")mitEDIICON.SCR,dasdessen
  48. ÜbersetzunginForthdarstellt.EinResourceConstructionSet
  49. gehörtsowohlzumLieferumfangdesEntwicklungspaketsalsauchzum
  50. Megamax-"C"-Paket.
  51.  
  52.  
  53. üëVerzeichnisderWortederGEM-Bibliothek
  54. Ç
  55. DieGEM-BibliothekbestehtausdenFilesBASICS.SCR,VDI.SCRund
  56. AES.SCR.DieindiesenFilesenthaltenenWortewerdenimfolgenden
  57. aufgeführt.DesweiterensollsicheineBibliothekvon"Super-
  58. worten"entwickeln,diedieHandhabungderGEM-Routinen
  59. vereinfacht.DieseFilessollenüberShadowscreensdokumentiert
  60. werdenundsinddaherhierênichtÇaufgeführt.
  61.  
  62.  
  63. ëBASICS.SCRÇ
  64.  
  65.  
  66. Vocabulary GEM   GEM definitions also
  67. \DasVokabular,dasdieGEM-Worteenthält.
  68.  
  69. Create intin   $100 allot       Create ptsin   $100 allot
  70. Create intout  $100 allot       Create ptsout  $100 allot
  71. Create addrin  $100 allot       Create addrout $100 allot
  72. \DieseArrayswerdenfürdiediversenParameterbenötigt.
  73. IhreGrößekannschwankenundistaktuellgeringer.
  74.  
  75. Variable grhandle
  76. \DieseVariablenimmtdieHandleauf,dievonOPNVWK
  77. geliefertwird.
  78.  
  79. Create contrl   $16 allot
  80. contrl 2 gemconstant opcode
  81.        2 gemconstant #intin
  82.        2 gemconstant #intout     ' #intout Alias #ptsout
  83.        2 gemconstant #addrin
  84.        2 gemconstant #addrout
  85.        2 gemconstant function    
  86. \DieKomponentendiesesArraystragenNamenundenthalten
  87. dieZahlderParameter,dieindenbetreffendenArrays
  88. (s.o.)übergebenwerden.
  89.  
  90. 3 Create global   $1E allot
  91. \DiesesArrayenthältWerte,diedieApplikation
  92. beschreiben.
  93.  
  94. addrout addrin intout intin global contrl 6 gemarray AESpb
  95.         ptsout intout ptsin intin  contrl 5 gemarray VDIpb
  96. \DiesebeidenArraysenthaltenZeigeraufdieArrays,die
  97. dieParameterenthalten...
  98.  
  99. Code array!   ( n0 ... nk-1 adr k --)
  100. \SpeichertkWerteabAdresseadrineinemArray.
  101. Code 4!   ( n1 .. n4 addr -- )
  102. Code 4@   ( addr -- n1 .. n4 )
  103. \Speichertbzw.liest4WerteabAdresseaddr.Siewerden
  104. dazubenutzt,Rechteckeindiediv.Arrayszuschreiben
  105. bzw.herauszuholen.
  106. Code AES   ( opcode #intin #intout #addrin #addrout -- intout@)
  107. \DiesesWortwickeltalleAES-Aufrufeab.
  108. Code VDI  ( opcode #ptsin #intin --)
  109. \DiesesWortwickeltalleVDI-Aufrufeab.
  110. ♪⑦: appl_init
  111. \DiesesWortinitialisiertdieApplikationundsolltevor
  112. demerstenAufrufeinerAES-Funktionaufgerufenwerden.
  113. : appl_exit
  114. \DiesesWortsollteamEndeeinerApplikationaufgerufen
  115. werden.
  116.  
  117. Create sizes 8 allot
  118. \DiesesArrayenthältdieGrößeeinesBuchstabensund
  119. einerBoxinPixeln
  120. : graf_handle 
  121. \LiefertdieVDI-HandleinderVariablenGRHANDLEunddie
  122. Buchstaben-bzw.BoxgrößeinSIZES
  123. sizeconstantcwidthsizeconstantcheight
  124. sizeconstantbwidthsizeconstantbheight
  125. \DiessindNamenfürdieElementedesArraysSIZES.Bei
  126. AusführungliefernsiedieentsprechendenAdressen.
  127. : opnvwk
  128. \Öffneteine"virtualworkstation"undmußaufgerufen
  129. werdfen.
  130. : clrwk 
  131. \LöschtdieWorkstation.DerHintergrundwirdinder
  132. gewähltenFarbegemalt.
  133. : clsvwk
  134. \Schließtdie"virtualworkstation".MußvorBeendendes
  135. Programmsaufgerufenwerden.
  136. : updwk 
  137. \Updatevirtualworkstation.AlleVDI-Kommandoswerden
  138. zuendeausgeführt.
  139. : s_clip     ( x1 y1 x2 y2 clipflag -- )
  140. \SetzeGrößeundPositiondesClippingrectanglefüralle
  141. VDI-Aufrufe.
  142.  
  143. : grinit    appl_init graf_handle opnvwk ;
  144. \FaßtallebenötigtenAufrufeamAnfangeinerApplikation
  145. zusammen.
  146. : grexit    clsvwk appl_exit   ;
  147. \dto.fürdieBeendigungeinerApplikation.
  148. 2Variable objc_tree
  149. \EnthältdieAdressedesObjectbaumes,aufdensich
  150. WortederObject-,Form-undMenülibrarybeziehen.In
  151. "C"mußbeijedemdieserWortederBaumextraangeführt
  152. werden.
  153. Variable c_flag 
  154. \gibtan,obdieAufrufevonSHOW_CundHIDE_C
  155. akkumuliertwerdensollen
  156. : show_c   ( -- )  
  157. \SchalteMausan
  158. : hide_c   ( -- )
  159. \SchaltedieMausaus
  160.  
  161.  
  162. ëAES.SCRÇ  
  163. üEvent:
  164. Ç
  165. : evnt_keybd  ( -- key )
  166. \WartetaufeinenKeyboard-event.keybestehtausscan-
  167. codeundASCII-Wert.
  168. : evnt_button  ( #clicks0 bmask bstate -- #clicks1 )
  169. \Wartetaufeinenbutton-event.#clicks0gibtdieAnzahl
  170. derClicksan,bmaskundbstategebendiezudrückende
  171. Tastean.#clicks1istdieZahlderClicks.
  172. : evnt_mouse  ( f leftX topY widht height -- )
  173. \Wartetaufeinenmouse-movement-event.fistnullfür
  174. dasBetretenund1fürdasVerlassendesdurchleftX
  175. topYwidthundheightspezifiziertenRechtecks.
  176. Create message $40 allot
  177. \DiesesArrayistdermessage-event-buffer.
  178. : evnt_mesag  ( -- )
  179. \Wartetaufeinenmessage-event.
  180. : evnt_timer  ( dtime -- )
  181. \WartetaufeinenTimer-event.dtimeistdie(doppelt
  182. genaue)zuwartendeZeitinmsec.
  183. Create events
  184. \DiesesArrayenthältdieParameterdesWortes
  185. EVNT_MULTI.DerInhaltdiesesFeldesistwiefolgt:
  186. +0:ArtdererkanntenEvents:
  187. Bit0Keyboard
  188. Bit1Button
  189. Bit2Mouserectangle1
  190. Bit3Mouserectangle2
  191. Bit4Message
  192. Bit5Timer
  193. +2#clicks0
  194. +4bmask
  195. +6bstate
  196. +8fleftXtopYwidthheight
  197. +18-------"-------------
  198. +28dtime
  199. : prepare
  200. \DiesesWortkopiertdenInhaltvonEVENTSindie
  201. enstprechendenParameterarraysundsolltevor
  202. EVNT_MULRIaufgerufenwerden.
  203. : evnt_multi   ( -- which )
  204. \DiesesWortwartetaufeinenvonmehrerenmöglichen
  205. Events.DasArrayEVENTSenthältdieParameterdieser
  206. Routine.whichistdieNummerderaufgetretenenEvents
  207. nachdemSchlüsselwiefürdasersteWortvonEVENTS.
  208. DieAusgabeparametermüssendenGEM-Arraysentnommen
  209. werden...
  210. : evnt_dclick  ( dnew dgetset -- dspeed )
  211. \DiesesWortsetztoderliestdieZeitspannefüreinen
  212. erkanntenMehrfachclick.dgetset=1bedeutet,daßdnew
  213. alsneueZeitgesetztwird.dspeedistdieeingestellte
  214. Zeitspanne.
  215. ♪÷üMenu:Ç
  216.  
  217. : menu_bar  ( showflag -- )
  218. \LöschtodersetztdieMenüleiste.
  219. : menu_icheck  ( item showflag -- )
  220. \SetztoderlöschtdenHakenvoreinemmenuitem
  221. : menu_ienable ( item enableflag -- )
  222. \Schalteteinenmenuitemeinoderaus.Ausgeschaltete
  223. menuitemserscheineninhellerSchrift.
  224. : menu_tnormal ( title normalflag -- )
  225. \StellteinenMenütitelnormaloderinversdar.
  226. : menu_text  ( item laddr -- )
  227. \ÄndertdenTexteinesmenuitem.DieLängedarfsich
  228. abernichtändern!
  229. : menu_register( apid laddr -- menuid )
  230. \InstallierteinDesktopAccessoryinderMenüleiste.
  231. menuidistdiePositionimMenü
  232.  
  233. üObjectÇ
  234.  
  235.  
  236. : objc_add   ( parent child -- )
  237. \FügteinObjektchildandasEndederchildlistdes
  238. Objektesparentan.
  239. : objc_delete  ( object --  )
  240. \LöschteinObjektvomBaum.
  241. : objc_draw   ( startob depth x y width height -- )
  242. \ZeichnetdenBaumvonstartobmitderTiefedepthneu.x
  243. ywidthundheightgebeneinClipping-Rectanglean.
  244. : objc_find   ( startob depth x y -- obnum )
  245. \SuchtdasObjektunterderMauspositionxy.Liefert
  246. dieObjektnummeroder-1.
  247. : objc_offset  ( object -- x y )
  248. \LiefertdieBildschirmpositoneinesObjektes
  249. : objc_order   ( object newpos -- )
  250. \BewegteinObjektvoneinerStelledesBaumszueiner
  251. anderen.
  252. : objc_edit    ( object char index kind -- newindex )
  253. \WirdzumEditierendesTextesinnerhalbeinesObjektes
  254. benutzt.
  255. : objc_change(objectxywidthheightnewstateredraw--)
  256. \ÄndertdenObjektstatusundzeichnetdasObjektneu.
  257.  
  258. üForm:Ç
  259.  
  260. : form_do     ( ltree startobj -- objectno )
  261. \DieseRoutinezeigteinObjektanunderlaubtdem
  262. Benutzer,eszuändern.objectno.istdieNummerdes
  263. exitbutton.
  264. : form_dial   ( diflag lix liy liw lih  bix biy biw bih )
  265. \DieseRoutinebestehtausvierRoutinen,ihreFunktion
  266. wirdvondiflagbestimmt:
  267. 0ReserviereeinenBildschirmbereichfürein
  268. Objekt.
  269. 1MaleeinewachsendeBox
  270. 2MaleeineschrumpfendeBox
  271. 3GibdenreserviertenBildschirmbereichfrei.
  272. ♪√: form_alert  ( defbttn 0string -- exbttn )
  273. \ErlaubtaufeinfacheArt,Alert-Boxenzubauen.defbttn
  274. istderDefaultknopf,0stringisteindurch$00
  275. begrenzterString,derdasAussehenderBoxbestimmt
  276. undexbttnistdergedrückteKnopf.
  277. : form_error  ( enum -- exbttn )
  278. \MalteineAlertboxmitdemText"TOS-Fehler-Nummer
  279. sounso"
  280. : form_center ( ltree -- x y width height )
  281. \RechnediePositioneinesinderMittedesBildschirms
  282. zentriertenObjectesüÇaus.
  283. ü
  284. Graphic:Ç
  285.  
  286. : graf_dragbox(startxstartywidthheightboundxboundy
  287. boundwboundh--finishxfinishy)
  288. \MaltdenUmrißeinerBox,dieaufdemBildschirmmitder
  289. Mausbewegtwerdenkann.DieBewegungderMauswird
  290. durcheinäußeresRechteckbeschränkt.
  291. : graf_movebox(sourcexsourceywidthheightdestxdesty--)
  292. \MalteineBox,diesichvonsourcenachdestbewegt.
  293. : graf_growbox     ( stx sty stw sth  fix fiy fiw fih -- )
  294. \MalteineexpandierendeBox.
  295. : graf_shrinkbox   ( fix fiy fiw fih  stx sty stw sth -- )
  296. \MalteineschrumpfendeBox.
  297. : graf_watchbox   ( object instate outstate -- inside/outside )
  298. \ÜberwachtdieBewegungderMausinnerhalbeines
  299. Objektes....
  300. : graf_slidebox   ( parent object vhflag -- vhpos )
  301. \ÜberwachtdasZieheneinerkleinenBoxineinergroßen
  302. BoxmitderMaus....
  303.  
  304. 2Variable mofaddr  
  305. \ZeigeraufeineselbstdefinierteMausform
  306. : graf_mouse   ( mouseform -- )
  307. \SetztdieMausform:
  308. 0Pfeil
  309. 1Cursor
  310. 2Biene
  311. 3Zeigefinger
  312. 4Hand
  313. 5dünnesFadenkreuz
  314. 6dickesFadenkreuz
  315. 7FadenkreuzmitUmriß
  316. 255selbstdefiniert
  317. 256hidemouse
  318. 257showmouse
  319. : graf_mkstate   ( -- )
  320. \liefertMauspositionundKnöpfeindendiv.Arrayszurück.
  321. ü
  322. Fileselect:
  323.  
  324. ÇCreateinpath
  325. \DerDefaultpathstehtindiesemArraymiteinem$00-Byte
  326. abgeschlossen.
  327. Createinsel
  328. \DerNamedesselektiertenFiles...
  329. ♪√:fsel_input(--button)
  330. \maltdiesog.Fileselectorboxundwartetaufdie
  331. AuswahleinesFiles.buttonistdergedrückteKnopf(0
  332. =Cancel)
  333.  
  334. üWindow:Ç
  335.  
  336. : wind_create(componentsleftXtopYmaxWIDTHmaxHEIGTH--
  337. handle)
  338. \diesesWorterzeugteinFenstermitdiv.Bestandteilen
  339. undeinerMaximalgröße.LieferteineHandlefür's
  340. Fenster.
  341. :wind_open  ( W-handle leftX topY width height -- )
  342. \MalteinFensterinderangegebenGrößeaufdem
  343. Bildschirm.
  344. : wind_close  ( Whandle -- )
  345. \SchließtundlöschteinFenster.Eskannauchwieder
  346. geöffnetwerden.
  347. : wind_delete  ( Whandle -- )
  348. \LöschteinFenster,sodaßesnichtmehrgeöffnetwerden
  349. kann.
  350. : wind_get  ( Whandle funktion# -- )
  351. \Liefertdiv.InformationenübereinFenster...
  352. : wind_set  ( Whandle funktion# par0 par1 par2 par3 -- )
  353. \Setztdiv.AttributeeinesFensterwieTitelzeile,
  354. Sliderpos.usw.
  355. : wind_find  ( mouseX mouseY -- Whandle )
  356. \SuchtdasFensterunterderMausposition.
  357. : wind_update( funktion# -- )
  358. \wirdbenutzt,umdieManipulationananderenFenstern
  359. oderMenüauswahlwährenddesZeichnenszuunterbinden.
  360. : wind_calc  ( 0/1 components leftX topY width height -- )
  361. \KonvertiertbeiFensterndieInnen-inAußenmaße(0)
  362. oderumgekehrt(1).DieAusgabeerfolgtindenGEM-
  363. Arrays.
  364.  
  365. üRSRCÇ:
  366.  
  367. : rsrc_load  ( addr -- )  \ needs address of 0-terminated $
  368. \LädteinResourcefileindenSpeicher.
  369. : rsrc_load"   
  370. \LädtdasResourcefile,dessenName,durchein"
  371. begrenzt,aufdiesesWortfolgt.
  372. : rsrc_free  ( -- ) 
  373. \GibtdendurcheinResourcefilebeanspruchtenSpeicher-
  374. bereichwiederfrei.
  375. : rsrc_gaddr  ( type index -- laddr )
  376. \LiefertdieAdresseeinesObjektesimResourcefile.
  377. : rsrc_saddr  ( type index laddr --)
  378. \SpeichertdieAdresseeinesObjektesab.
  379. : rsrc_obfix  ( index laddr --)
  380. \KonvertiertObjektlageundGrößevonCharacter-in
  381. Pixeleinheiten.
  382.  
  383. ëVDI.SCRÇ 
  384.  
  385. üOutputFunction
  386.  
  387. Ç: pline   ( x1 y1 x2 y2 ... xn yn count -- )
  388. \malteinegeknickteLinievonx1,y1zux2,y2usw.
  389. : pmarker  ( x1 y1 x2 y2 ... xn yn count -- )
  390. \GibtPolymarkeraus.
  391. : gtext    ( addr count x y -- )
  392. \GibtTextanderangegebenenStelleaus.
  393. : fillarea  ( x1 y1 x2 y2 ... xn yn count -- )
  394. \MalteinausgefülltesVieleck.
  395. : contourfill  ( color x y -- )
  396. \füllteingemaltenBereichaus.
  397. : r_recfl    ( x1 y1 x2 y2 -- )
  398. \MalteinRechteckohneRand.
  399. : GDP   ( #ptsin #intin functionno -- )
  400. \Allg.Malroutine
  401. : bar    ( x1 y1 x2 y2 -- )
  402. \MalteingefülltesRechteckmitRand.
  403. : arc   ( startwinkel endwinkel x y radius -- )
  404. \MaltdenAusschnitteinesKreises.
  405. :pie   ( startwinkel endwinkel x y radius -- )
  406. \MalteinStückTorte.
  407. : circle   ( x y radius -- )
  408. \MalteinenKreis
  409. : ellarc   ( startwinkel endwinkel x y xradius yradius -- )
  410. \MalteinenEllipsenabschnitt
  411. : ellpie   ( startwinkel endwinkel x y xradius yradius -- )
  412. \Jetztgefüllt!
  413. : ellipse   ( x y xradius yradius -- )
  414. \Undnochmal,bloßganz.
  415. : rbox    ( x1 y1 x2 y2 -- )
  416. \RechteckmitabgerundetenEcken
  417. : rfbox   ( x1 y1 x2 y2 -- )
  418. \gefüllt.
  419. : justified   ( string x y length wordspace charspace -- )
  420. \TextausgabemitdefinierterLänge,maximalemWort-und
  421. Buchstabenabstand.
  422.  
  423. üAttributeFunctionÇ:
  424.  
  425. : swr_mode   ( mode -- )
  426. \SetztAusgabemodus...
  427. 1 Setmode replace               2 Setmode transparent
  428. 3 Setmode exor                  4 Setmode revtransparent
  429.  
  430. : sl_type   ( style -- )
  431. \SetztPolylinetype
  432. 1 Settype solid                 2 Settype longdash
  433. 3 Settype dot                   4 Settype dashdot
  434. 5 Settype dash                  6 Settype dashdotdot
  435. 7 Settype userdef
  436.  
  437. ♪⑧: sl_udsty    ( pattern -- )
  438. \setztuserdefinedlinestyle
  439. : sl_width   ( width -- )
  440. \setztpolylinelinewidth
  441. : sl_color   ( color -- )
  442. \setztpolylinecolorindex
  443. : sl_ends    ( begstyle endstyle -- )
  444. \setztpolylineendstyles
  445. : sm_type   ( symbol -- )
  446. \setztpolymarkertype
  447.  
  448. 1 Setmtype point                2 Setmtype plus
  449. 3 Setmtype asterisk             4 Setmtype square
  450. 5 Setmtype cross                6 Setmtype diamond
  451.  
  452. : sm_height  ( height -- )
  453. \setztpolymarkerheight
  454. : sm_color   ( color -- ) 
  455. \setztpolymarkercolorindex
  456. : st_height  ( height  -- )
  457. \setzttextcharacterheight(absolut)
  458. : st_point     ( point -- )
  459. \setzttextcharacterheight(points)
  460. : st_rotation  ( winkel -- )
  461. \setztcharacterbaselinerotation
  462. : st_font      ( font -- )
  463. \setztcharacterfont
  464. : st_color    ( color -- 
  465. \setzttextcolour
  466. : st_effects   ( effect -- )
  467. \setztfett,kursivusw.
  468. : st_alignement( horin vertin -- )
  469. \setztcharacteralignment
  470. : sf_interior   ( style  -- 
  471. \setztfillinteriorstyle
  472. : sf_style   ( styleindex -- )
  473. \setztfillstyleindex
  474. : sf_color   ( color -- )
  475. \setztfillcolourindexfürVielecke
  476. : sf_perimeter   ( pervis -- )
  477. \schaltetfilloutlineum.
  478.  
  479. üRasterOperation:
  480.  
  481. ÇDieRasteroperationendienenzumschnellenVerschiebenvon
  482. BildschirmbereichensowohlaufdemBildschirmselbstalsauchvom
  483. BildschirmindenSpeicherundzurück.Daessichumsehrschnelle
  484. Routinenhandelt,solltevonihnenimmerdannGebrauchgemacht
  485. werden,wennBildschirminhalterestauriertwerdenmüssen.Alle
  486. -sonstnotwendigen-Ausgaberoutinenbrauchenerheblichmehr
  487. Zeit.
  488.  
  489. Variable>memMFDB
  490. CreatescrMFDB
  491.  
  492. DieMemoryFormDefinitionBlocksbeschreibendenAufbaueines
  493. PixelblocksimSpeicheroderaufdemBildschirm.Ummitmehreren
  494. Speicherbereichenarbeitenzukönnen,enthält>memMFDBeinen
  495. PointeraufdengeradebenutztenBereich.
  496.  
  497. : copyopaque  ( Xfr Yfr width height Xto Yto mode --)
  498. \GrundroutinefüralleRasteroperationen
  499.  
  500. :scr>mem(addr_of_memMFDB--)
  501. \DefiningWordfürRasteroperation(Bildschirm->Speicher)
  502.  
  503. :mem>scr(addr_of_memMFDB--)
  504. \DefiningWordfürRasteroperation(Speicher->Bildschirm)
  505.  
  506.  
  507. : scr>scr  ( Xfr Yfr width height Xto Yto --)
  508. \verschiebteinRechteckaufdemBildschirm.
  509.  
  510. CreatememMFDB1
  511. \EinSpeicherblock,derdengesamtenBildschirmspeichern
  512. kann.
  513.  
  514. : scr>mem1 ( Xleft Ytop Width Heigth -- )
  515. \verschiebtdengesamtenBildschirmindenSpeicher.
  516.  
  517. : mem>scr1 ( Xleft Ytop Width Heigth -- )
  518. \verschiebtdenSpeicherblockwiederindenBildschirm.
  519.  
  520. : r_trnfm  ( -- )
  521. \rechnetStandard-Koordinateningerätespezifischeumund
  522. umgekehr.
  523.  
  524. : get_pixel  ( x y -- color flag )
  525. \ermitteltFarbeeinesPixels.flagist1,wennPunkt
  526. gesetzt.
  527.  
  528. ♪⑧üInputÇ:
  529.  
  530. : sin_mode   ( devtype mode -- )
  531. \legtdenInputmodusfest....
  532. : sm_locater   ( x y -- status )
  533. \PositionderMaus,AngabederAnfangspos.erforderlich
  534. : sm_valuator  ( val_in -- status )
  535. \VerwaltungvonWertänderungen....
  536. : sm_choice    ( -- status )
  537. \TestedieFunktionstasten
  538. : sm_string   ( addr max_len echomode x y -- status )
  539. \EingabeeinesStringsmitEcho.
  540. : sc_form   ( addr -- )
  541. \setztMausform
  542. : ex_time   ( tim_addr -- long_otim_addr )
  543. \setztneueTimerinterrupt-Routine
  544. : q_mouse   ( -- x y status )
  545. \LiestdenMauszustandaus.
  546. : ex_butv   ( pusrcode -- long_psavcode )
  547. \ErsetztMausbuttoninterruptroutine
  548. : ex_motv   ( pusrcode -- long_psavcode )
  549. \...Mausbewegungsinterruptroutine...
  550. : ex_curv   ( pusrcode -- long_psavcode )
  551. \...Mausforminterruptroutine...
  552. : q_key_s   ( -- status )
  553. \liefertZustandderShift-Tasten.
  554.  
  555. üInquire:
  556. Ç
  557. : q_extnd   ( info_flag -- )
  558. \DieseunddiefolgendenFunktionendienendazu,
  559. festzustellen,welchederobigenVDI-Aufrufeman
  560. getätigthat.Mankannsienichtkurzbeschreiben,
  561. dahermußdieEingangserwähnteLiteraturzuRate
  562. gezogenwerden.
  563. : q_color  ( color_index info_flag )
  564. : ql_attributes   ( -- )  
  565. : qm_attributes   ( -- )  
  566. : qf_attributes   ( -- )  
  567. : qt_attributes   ( -- ) 
  568. : qt_extent   ( string -- )
  569. : qt_width   ( char -- status )
  570. : qt_name   ( element_num -- )
  571. : q_cellarray   ( cols rows x1 y1 x2 y2 -- )
  572. : qin_mode   ( dev_type -- mode )
  573. : qt_fontinfo   ( -- )   
  574.  
  575. Escape:
  576.  
  577. : q_chcells   ( -- rows cols )
  578. \GrößedesBildschirms
  579. : exit_cur    ( -- )          
  580. \textcursoraus
  581. : enter_cur   ( -- )        
  582. \textcursorein
  583. : curup       ( -- )      
  584. \hoch
  585. : curdown     ( -- )      
  586. \runter
  587. : curright    ( -- )      
  588. \????
  589. : curleft     ( -- )     
  590. \!!!!
  591. : curhome     ( -- )      
  592. \cursornachlinksoben
  593. : eeos        ( -- )      
  594. \erasetoendofscreen
  595. : eeol        ( -- )     
  596. \-----"-------line
  597. : s_curaddress ( row col -- )
  598. \positionierecursor
  599. : curtext  ( addr count -- )
  600. \textausgabe
  601. : rvon    ( -- )   
  602. \reversevideoon
  603. : rvoff  ( -- )       
  604. \----"------off
  605. : q_curaddress ( -- row col )
  606. \fragenachcursoradress
  607. : q_tabstatus  ( -- status ) 
  608. \fragenachMausstatus
  609. : hardcopy     ( -- )        
  610. \screendump
  611. : dspcur       ( x y -- )    
  612. \positionieremaus
  613. : rmcur        ( -- )        
  614. \entferneMaus
  615.  
  616. DiefolgendenBefehledienenzurArbeitmitverschiedenenOutput-
  617. Devices.DiesisteinbesondersschlechtdokumentierterTeil.
  618. EinigeHinweisefindetmaninderDokumentationzum
  619. EntwicklungspaketvonDigitalResearch.Esistfraglich,oballe
  620. BefehletatsächlichaufdemAtariarbeiten.Versucheindieser
  621. Richtungsindbislangnochnichterfolgreichgewesen.
  622.  
  623. : form_adv     ( -- )        
  624. \FürDrucker:Seitenvorschub
  625. : output_window( x1 y1 x2 y2 -- )
  626. \FürDrucker:GibteinFensteraus.
  627. : clear_disp_list  ( -- )
  628. \FürDrucker:brichtAusdruckab,wieClearWorkstation,
  629. aberohneabschließendesLinefeed.
  630. : bit_image   ( string aspect scaling num_pts x1 y1 x2 y2 -- )
  631. \FürDrucker:Gibtein'BitImageFile'aus.
  632.  
  633. DiefolgendenBefehlebeziehensichaufzusätzlicheOutput-
  634. Treiber;einEffektaufdemAtariistbishernichtbekannt.Sie
  635. sindnurderVollständigkeithalberaufgeführt.
  636.  
  637. : s_palette   ( palette -- selected )
  638. \setztFarbpaletteaufIBM-Farbmonitor??!!
  639. : qp_films   ( -- )
  640. : qp_state   ( -- )            
  641. : sp_state   ( addr -- )
  642. : sp_save    ( -- )     
  643. : sp_message   ( -- )      
  644. : qp_error     ( -- )      
  645. : meta_extents   ( x1 y1 x2 y2 -- )
  646. : write_meta     ( intin num_intin ptsin num_ptsin -- )
  647. : m_filename     ( string -- )
  648.  
  649.